/*
 * arquivo.c
 *
 *  Created on: 09/06/2011
 *      Author: joão e sheila
 */


#include "arquivo.h"

void CriaArquivo(Lista_arquivo *L) {
    L->comp_arquivo = 0;
}

/*dá a posicao do livro no vetor e devolve uma struct com nome do arquivo e lista de linha*/
TipoElemento2 AcessaArquivo (TipoPosicao p, Lista_arquivo *L) { /*tipo da posicao eh int*/

	TipoElemento2 *aux=NULL;

    if (L->comp_arquivo > p)
        return L->elementos[p];
    else{
        printf("erro: elemento inexistente \n");
        return *aux;}

    return *aux;
}


void ImprimeListaArquivo (Lista_arquivo *L){
    TipoPosicao i = 0;
    TipoPosicao aux=0;

    for (i = 0; i < L->comp_arquivo; i++){
        printf("arquivo que esta a palavra %s \n", AcessaArquivo(i, L).nome_arquivo);

        for(aux=0; aux<(AcessaArquivo(i, L).linha_do_arquivo.comp); aux++)
        	printf("linhas %d \n", AcessaArquivo(i, L).linha_do_arquivo.elementos[aux]);

    }
}

void InsereArquivo(char *x, TipoPosicao p, Lista_arquivo *L){ /*insere soh o nome do arquivo e nao as linhas, vou precisar da vazia nas linhas*/
    if (L->comp_arquivo < MAX){
        TipoPosicao i;
        for(i = (L->comp_arquivo+1); i > p; i--){
            L->elementos[i] = L->elementos[i-1]; /*aqui ateh a linha eh passada pra outra posicao*/
        }
        L->elementos[p].nome_arquivo = x;
        L->comp_arquivo++;
    } else
        printf("erro: lista cheia\n");


}

/*nesse caso a LISTA VAI SER &L.elementos[q].linha_do_arquivo, para mexer com as linhas*/


void AdicionaArquivo(char *x, Lista_arquivo *L) {
    InsereArquivo(x, L->comp_arquivo, L);
}

int VaziaArquivo (Lista_arquivo *L){
    if(L->comp_arquivo == 0)
        return 1;
    else
        return 0;
}

int LocalizaArquivo (char *x, Lista_arquivo *L){
    TipoPosicao i;
    for (i = 0; i < L->comp_arquivo; i++)
        if(L->elementos[i].nome_arquivo == x)
            return i;

    return FIM;
}

TipoPosicao PrimeiroArquivo (Lista_arquivo *L){
    if (L->comp_arquivo > 0)
        return 0;
    else
        return FIM;
}

TipoPosicao SeguinteArquivo (TipoPosicao p, Lista_arquivo *L){
    if (L->comp_arquivo < (p+1)){
        printf("erro: posicao inexistente\n");
    } else if(L->comp_arquivo == (p+1)){
        return FIM;
    } else {
        return (p+1);
    }
    return 0;
}


